1. Field of the Invention
The present invention relates generally to the design and development of microprocessor and memory systems within computers. More particularly, the present invention relates to reducing latency and increasing bandwidth of data transfers between a microprocessor and memory subsystem. Still more particularly, the present invention relates to a technique for compressing blocks of data, transmitting the compressed data between the microprocessor and memory subsystem, and re-expanding the compressed data.
2. Description of the Relevant Art
Microprocessors are the "brains" of a computer. Typically, a microprocessor manipulates data contained in memory. The data must be transmitted from the memory to the microprocessor for manipulation. After the data has been manipulated by the microprocessor, the manipulated data may be transmitted back to the memory subsystem for storage. A paramount concern of computer designers is the speed at which a computer operates. Computer speed has increased more than ten-fold in the last ten years. The speed at which a computer operates is a function of the operating speed of the computer's sub-components (microprocessors, memory, video controllers, audio controllers, etc.). Extensive research and development in semiconductor technology has resulted in microprocessor designs that have the capability to operate much faster than the system memory with which microprocessors cooperate, thus limiting overall system performance. Competing demands upon the bus structures which interconnect a microprocessor to system memory can further limit overall performance.
Computers with high memory latencies may require that the microprocessors enter wait states, or pause, thus reducing the processor's throughput. Memory latency may be negatively impacted due to inefficient utilization of the bus structure's available bandwidth.
Data compression may generally be employed in systems where large amounts of data must be conveyed through a medium of limited bandwidth. Data compression techniques have also been employed to compress the size of an entire data file on a disk. Data compression also reduces the transfer time of a file across a local or wide area network. Data compression algorithms typically take advantage of the correlated nature of data. That is, a relationship often exists between data values within a file. For example, a block of 100 bytes of data in which each byte contains the same value (e.g., 0) is highly correlated. At the other extreme, a block of 100 bytes of completely random data has no correlation. Other collections of data fall between these two extremes. Video and audio data typically are relatively highly correlated. Some data compression algorithms take advantage of the correlated nature of a data set by employing a "short-hand" representation of the full data set. For instance, a bit pattern comprising one hundred 0-values might be represented simply by "100 0" indicating 100 bytes of the value 0.
It would be advantageous to use data compression techniques to accommodate data transfers between a microprocessor and memory in a computer, thereby more efficiently utilizing the bandwidth of the bus structures and reducing latency.